package com.lottery.game.common.utils;

import java.math.BigDecimal;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author chenye
 * 2018-04-01  验证工具类
 */
public final class ValidateUtils {
	public static String randomUUID() {
		return UUID.randomUUID().toString().replaceAll("-", "");
	}
	public static boolean isNum(String str){
        //带小数的
        Pattern pattern = Pattern.compile("^[-+]?[0-9]+(\\.[0-9]+)?$");
        if(pattern.matcher(str).matches()){
            //数字
            return true;
        } else {
            //非数字
            return false;
        }
	}
	public static boolean isCode(String str){
        //带小数的
        Pattern pattern = Pattern.compile("^[-+]?[0-9]+(\\.[0-9]+)?$");
        if(pattern.matcher(str).matches()&&str.length()==4){
            //数字
            return true;
        } else {
            //非数字
            return false;
        }
	}

	/**
	 * 验证是否为字母汉字
	 * @param str
	 * @return
	 */
	public static boolean isNumLetter(String str){
        //带小数的
        Pattern pattern = Pattern.compile("[A-Za-z0-9]");
        if(pattern.matcher(str).matches()){
            //数字
            return true;
        } else {
            //非数字
            return false;
        }
	}
	public static boolean isUserName(String str){
		//4-18字母的组合，最少一个字母
		String USR_REGX = "^[a-zA-Z0-9_\\u4e00-\\u9fa5]{4,18}+$";
		if((str).matches(USR_REGX)){
			//数字
			return true;
		} else {
			//非数字
			return false;
		}
	}
	public static void main(String[] args) {
		System.out.println(isMobileNO("1838145320"));
	}

	/**验证是否用户名
	 * @param str
	 * @return
	 */
	public static boolean isUsername(String str){
        //带小数的
        Pattern pattern = Pattern.compile("[A-Za-z0-9]");
        if(pattern.matcher(str).matches()&&str.length()>=4&&str.length()<=18){
            //数字
            return true;
        } else {
            //非数字
            return false;
        }
	}
	/**
	 * 是否手机号
	 * @param str
	 * @return
	 */
	public static boolean isMobile(final String str) {
	     Pattern p = null;
	     Matcher m = null;
	     boolean b = false;
	     p = Pattern.compile("^[1][3,4,5,7,8][0-9]{9}$"); // 验证手机号
	     m = p.matcher(str);
	     b = m.matches();
	     return b;
	 }
	/**
	 * 验证字符串是否为空
	 * @param str
	 * @return
	 */
	public static boolean isNull(String str){
        if("".equals(str)||str==null){
            return false;
        } else {
            return true;
        }
	}
	 /**
     * @see 验证手机号是否合法
     * @param mobiles
     * @return
     */
    public static boolean isMobileNO(String mobile){
        if (mobile.length() != 11)
        {
            return false;
        }else{
            /**
             * 移动号段正则表达式
             */
            String pat1 = "^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
            /**
             * 联通号段正则表达式
             */
            String pat2  = "^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
            /**
             * 电信号段正则表达式
             */
            String pat3  = "^((133)|(153)|(177)|(18[0,1,9])|(149))\\d{8}$";
            /**
             * 虚拟运营商正则表达式
             */
            String pat4 = "^((170))\\d{8}|(1718)|(1719)\\d{7}$";

            Pattern pattern1 = Pattern.compile(pat1);
            Matcher match1 = pattern1.matcher(mobile);
            boolean isMatch1 = match1.matches();
            if(isMatch1){
                return true;
            }
            Pattern pattern2 = Pattern.compile(pat2);
            Matcher match2 = pattern2.matcher(mobile);
            boolean isMatch2 = match2.matches();
            if(isMatch2){
                return true;
            }
            Pattern pattern3 = Pattern.compile(pat3);
            Matcher match3 = pattern3.matcher(mobile);
            boolean isMatch3 = match3.matches();
            if(isMatch3){
                return true;
            }
            Pattern pattern4 = Pattern.compile(pat4);
            Matcher match4 = pattern4.matcher(mobile);
            boolean isMatch4 = match4.matches();
            if(isMatch4){
                return true;
            }
            return false;
        }
    }

    public static BigDecimal dealNULL(BigDecimal val) {
        return val==null?BigDecimal.ZERO:val;
    }

}
